package com.zenithmind.version.service;

import com.zenithmind.version.pojo.dto.RepositoryStatisticsDTO;
import com.zenithmind.version.pojo.vo.RepositoryVO;

/**
 * 仓库操作服务接口 - 遵循接口隔离原则，专门处理仓库的特殊操作
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
public interface RepositoryOperationService {

    /**
     * Fork仓库
     * 
     * @param sourceRepositoryId 源仓库ID
     * @param name 新仓库名称
     * @return 新仓库VO
     */
    RepositoryVO forkRepository(String sourceRepositoryId, String name);

    /**
     * 获取仓库克隆URL
     * 
     * @param id 仓库ID
     * @param protocol 协议类型（http/ssh）
     * @return 克隆URL
     */
    String getCloneUrl(String id, String protocol);

    /**
     * 初始化仓库
     *
     * @param repositoryId 仓库ID
     * @param initReadme 是否初始化README
     * @param initGitignore 是否初始化.gitignore
     * @param gitignoreTemplate .gitignore模板
     * @param initLicense 是否初始化LICENSE
     * @param licenseTemplate LICENSE模板
     * @return 是否成功
     */
    Boolean initializeRepository(String repositoryId, Boolean initReadme,
                                Boolean initGitignore, String gitignoreTemplate,
                                Boolean initLicense, String licenseTemplate);

    /**
     * 更新仓库统计信息
     * 
     * @param repositoryId 仓库ID
     * @return 是否成功
     */
    Boolean updateRepositoryStatistics(String repositoryId);

    /**
     * 获取仓库统计信息
     *
     * @param ownerId 所有者ID
     * @return 统计信息
     */
    RepositoryStatisticsDTO getRepositoryStatistics(String ownerId);
}
